export type ColumnType = 'input' | 'select' | 'date' | 'datetime' | 'number' | 'textarea' | 'custom'

export interface SelectOption {
  label: string
  value: any
  disabled?: boolean
}

export interface ColumnConfig {
  prop: string // 字段名
  label: string // 列标题
  type: ColumnType // 组件类型
  required?: boolean // 是否必填
  width?: string | number // 列宽
  placeholder?: string // 占位符
  disabled?: boolean // 是否禁用

  // select专用
  options?: SelectOption[] // 下拉选项
  multiple?: boolean // 是否多选

  // input专用
  maxlength?: number
  showWordLimit?: boolean

  // number专用
  min?: number
  max?: number
  step?: number
  precision?: number

  // date专用
  dateFormat?: string // 默认 'YYYY-MM-DD'
  valueFormat?: string

  // 自定义校验
  rules?: any[]

  // 插槽名称（当type为custom时使用）
  slotName?: string
}

export interface DynamicTableConfig {
  columns: ColumnConfig[]
  showOperation?: boolean // 是否显示操作列
  operationWidth?: string | number // 操作列宽度
  showAddBtn?: boolean // 是否显示添加按钮
  showDeleteBtn?: boolean // 是否显示删除按钮
  addBtnText?: string
  deleteBtnText?: string
  minRows?: number // 最少行数
  maxRows?: number // 最多行数
}
